#pragma once

class vec2
{
public:
	vec2(float x1, float y1);
	vec2(void);
	~vec2(void);

	inline const vec2& operator+=(const vec2 & other);
	inline const vec2& operator-=(const vec2 & other);
	inline const vec2& operator*=(const vec2 & other);
	inline const vec2& operator/=(const vec2 & other);

	inline const vec2& operator*=(float val);

	friend vec2 operator+(const vec2& v1, const vec2& v2);
	friend vec2 operator-(const vec2& v1, const vec2& v2);
	friend vec2 operator*(const vec2& v1, const vec2& v2);
	friend vec2 operator/(const vec2& v1, const vec2& v2);

	friend vec2 operator*(const vec2& v1, float val);

	float x;
	float y;
};

inline const vec2& vec2::operator+=(const vec2 & other)
{
	x += other.x;
	y += other.y;
	return *this;
}

inline const vec2& vec2::operator-=(const vec2 & other)
{
	x -= other.x;
	y -= other.y;
	return *this;
}

inline const vec2& vec2::operator*=(const vec2 & other)
{
	x *= other.x;
	y *= other.y;
	return *this;
}

inline const vec2& vec2::operator/=(const vec2 & other)
{
	x /= other.x;
	y /= other.y;
	return *this;
}

inline const vec2& vec2::operator*=(float val)
{
	x*=val;
	y*=val;
}